// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import API from './API'

import ListClass from '@api/questionnaire/model/QuestionnaireDetailReq'
import BaseClass from '@api/questionnaire/model/QuestionnaireDto'
import QuestionClass from '@api/questionnaire/model/QuestionnaireQuestionDto'
import OptionClass from '@api/questionnaire/model/QuestionnaireOptionDto'

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: '问卷', // 词语
    PASS: CORE.MAP.TIP_PASS, // 通过 (为 null 取 CORE.MAP.TIP_XXX，可设置为 '')
    REJ: CORE.MAP.TIP_REJ, // 拒绝 (为 null 取 CORE.MAP.TIP_XXX，可设置为 '')
    PREFIX: CORE.MAP.TIP_PREFIX, // 前缀 (为 null 取 CORE.MAP.TIP_XXX，可设置为 '')
    MIDDLE: CORE.MAP.TIP_MIDDLE, // 中间 (为 null 取 CORE.MAP.TIP_XXX，可设置为 '')
    SUFFIX: CORE.MAP.TIP_SUFFIX, // 后缀 (为 null 取 CORE.MAP.TIP_XXX，可设置为 '')

    PREVIEW_URL: 'questionnaire/preview', // 预览地址

    inDrag: false, // 是否正在拖拽
    hoverNo: 0, // 鼠标悬浮的问题题号

    /**
     * 类型对象
     */
    TYPE: CORE.initObj(QuestionClass, {
      //
    }),

    /**
     * 选项对象
     */
    OPTION: CORE.initObj(OptionClass, {
      label: '',
      image: [],
      selectMulti: [],
    }),
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 页签
     */
    TAB: [
      ['base', '基本信息'],
      // ['welcome', '欢 迎 语'],
      ['question', '问题列表'],
      // ['thanks', '感 谢 语'],
      ['send', '发送设置'],
    ],

    /**
     * 状态
     */
    STATUS: [
      [1, '已发布', '', '绿'],
      [2, '未发布', '', '灰'],
    ],

    /**
     * 启动状态
     */
    START_STATUS: [
      [1, '已启动', '', '绿'],
      [2, '已暂停', '', '灰'],
    ],

    /**
     * 类型
     */
    TYPE: [
      ['textarea', '问答题'],
      ['radio', '单选题'],
      ['checkbox', '多选题'],
      ['textareaTable', '表格问答'],
      ['radioTable', '表格单选'],
      ['checkboxTable', '表格多选'],
      ['rate', '评分题'],
    ],

    /**
     * 校验
     */
    CHECK: [
      ['num', '纯数字'],
      ['word', '纯单词'],
      ['name', '真实姓名'],
      ['phone', '手机号码'],
      ['idNo', '身份证号码'],
      ['carNo', '车牌号码'],
      ['link', '网址链接'],
      ['email', '电子邮箱'],
    ],

    /**
     * 评分
     */
    RATE: [
      ['init', '默认'],
      ['none', '空白'],
      ['diy', '其他'],
    ],

    /**
     * 主题
     */
    THEME: [
      ['default', '默认主题'],
    ],

    /**
     * 标题按钮
     */
    TITLE_BTN: [
      ['{year}', '某年', '年'],
      ['{month}', '某月', '月'],
      ['{day}', '某日', '日'],
      ['{hour}', '几点', '点'],
      ['{minute}', '几分', '分'],
      ['{date}', 'yyyy-MM-dd', ''],
      ['{time}', 'hh:mm', ''],
    ],

    /**
     * 有效时间
     */
    VALID_TIME: [
      [1, '长期有效'],
      [2, '自定义'],
    ],

    /**
     * 发送类型
     */
    SEND_TYPE: [
      [1, '手动发送'],
      [2, '定时发送'],
      [3, '循环发送'],
    ],

    /**
     * 发送周期
     */
    SEND_CYCLE: [
      [1, '每日'],
      [2, '每周'],
      [3, '每月'],
    ],

    /**
     * 发送的每周周几
     */
    SEND_WEEK: Array(7).fill().map((_, i) => [i + 1, CORE.numWeek(i + 1, '周')]),

    /**
     * 发送的每月几日
     */
    SEND_MONTH: Array(29).fill().map((_, i) => i === 28 ? [99, '最后一日'] : [i + 1, `0${i + 1}日`.slice(-3)]),

    /**
     * 发送的小时分钟
     */
    HOUR_MINUTE: Array(25).fill()
      .map((_, i) => `0${(i / 2 | 0) + 8}:${i % 2 ? '3' : '0'}0`.slice(-5)).map(item => [item, item]),
  },

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 4. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: CORE.initObj(ListClass, {
    //
  }),

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setOne() 重置时使用
   * 4. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    tab: 'question',
    userList: [], // 发布的用户列表
    userIds: [], // 用户 uaaUserId 列表
    isForever: 1, // 是否为长期有效 (1是 2否)

    title: '', // 标题

    sendDate: '', // 定时发送的日期
    sendHour: '', // 定时发送的时分

    repeatConfig_time: undefined, // 循环设置的时间
    repeatConfig_week: [], // 循环设置的每周
    repeatConfig_month: [], // 循环设置的每月
  }),
}
